import {
  classicBeh
} from '../classic-beh.js';

const mMgr = wx.getBackgroundAudioManager(); // 返回我们要的音乐管理对象

Component({
  /**
   * 组件的属性列表
   */
  behaviors: [classicBeh],
  properties: {
    src: String,
    title: String,
    play: Boolean
  },

  /**
   * 组件的初始数据
   */
  data: {
    playing: false,
    pauseSrc: '/components/images/player@pause.png',
    playSrc: '/components/images/player@play.png'
  },

  attached: function(event) {
    this._recoverStatus();
    this._monitorSwitch();
  },

  detached: function(event) {
    // hidden 不会重新渲染，因此不会调用detached, wx:if 会重新渲染 因此会调用
    // mMgr.stop(); 
  },

  // attached: function (event) {

  // },


  /**
   * 组件的方法列表
   */
  methods: {
    onPlay(e) {

      if (!this.data.playing) {
        this._musicPlay();
      } else {
        this._musicPause();
      }

    },
    // 播放音乐
    _musicPlay() {
      this.setData({
        playing: true
      });
      mMgr.src = this.properties.src;
      mMgr.title = this.properties.title;
    },

    // 停止音乐
    _musicPause() {
      this.setData({
        playing: false
      });
      mMgr.pause();
    },

    _recoverStatus() {
      if (mMgr.paused) {
        this.setData({
          playing: false
        });
        return;
      }
      if (mMgr.src == this.properties.src) {
        this.setData({
          playing: true
        });
      }
    },

    _monitorSwitch() {
      // 监听背景音频播放事件
      mMgr.onPlay(() => {
        this._recoverStatus();
      });
      // 监听背景音频暂停事件
      mMgr.onPause(() => {
        this._recoverStatus();
      });
      // 监听背景音频停止事件
      mMgr.onStop(() => {
        this._recoverStatus();
      });
       // 监听背景音频自然播放结束事件
      mMgr.onEnded(() => {
        this._recoverStatus();
      });

    }

  }

})